#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

#' @export H2OMOJOModelBase
H2OMOJOModelBase <- setRefClass("H2OMOJOModelBase", fields = list(jmojo = "ANY"), methods = list(
  initialize = function(jmojo) {
    .self$jmojo <- jmojo
  },
  getPredictionCol = function() {
    invoke(.self$jmojo, "getPredictionCol")
  },
  getDetailedPredictionCol = function() {
    invoke(.self$jmojo, "getDetailedPredictionCol")
  },
  getWithDetailedPredictionCol = function() {
    warning("The method 'getWithDetailedPredictionCol' is deprecated and will be removed without replacement in 3.34.
    Detailed prediction columns is always enabled.")
    TRUE
  },
  getWithContributions = function() {
    invoke(.self$jmojo, "getWithContributions")
  },
  getFeaturesCols = function() {
    invoke(.self$jmojo, "getFeaturesCols")
  },
  getConvertUnknownCategoricalLevelsToNa = function() {
    invoke(.self$jmojo, "getConvertUnknownCategoricalLevelsToNa")
  },
  getConvertInvalidNumbersToNa = function() {
    invoke(.self$jmojo, "getConvertInvalidNumbersToNa")
  },
  getNamedMojoOutputColumns = function() {
    invoke(.self$jmojo, "getNamedMojoOutputColumns")
  },
  getWithLeafNodeAssignments = function() {
    invoke(.self$jmojo, "getWithLeafNodeAssignments")
  },
  getWithStageResults = function() {
    invoke(.self$jmojo, "getWithStageResults")
  },
  transform = function(sparkFrame) {
    sparkFrame <- spark_dataframe(sparkFrame)
    outputFrame <- invoke(.self$jmojo, "transform", sparkFrame)
    sdf_register(outputFrame)
  }
))
